function [N_Map] = neighbouring(N,N_Range,S_Map,D_Map)
% ____________ INPUT ___________
% N         - number of nodes
% N_Range   - neighborhood range
%------- S_Map = Sensors_Map ------------- defined in put_sensors
% Sensors_Map(:,1) - X position
% Sensors_Map(:,2) - Y position
% Sensors_Map(:,3) - current energy
% Sensors_Map(:,4) - max energy
% Sensors_Map(:,5) - stan czujnika (nieznany 0, zwykly 1, CH 2)
% Sensors_Map(:,6) - stan czujnika dla wizualizacji
%
%------- D_Map = Distances_Map ----------- defined in put_sensors
% D_Map  [NxN] odleglosci euklidesowe miedzy wezlami
%
% ____________ OUTPUT __________
% N_Map     - neighborhood map
% N_Map(:,1,1)      - number (L)of neighbors
% N_Map(:,2..L,1)   - list of neighbor node indexes   (BS has ID=0)
% N_Map(:,:,2)      - subordination 1-YES, 0-NO
%
%a=1;

N_Map(1:N,1,:)=0;            % liczba sasiadow wezla li, zadnych relacji, zaczynamy od zera
for li=1:N
    kolejny=2;
    clear odl;
    for li2 =1:N                            % szukamy sasiadow (w zasiegu) wezla li
        if N_Range >=D_Map(li,li2)          % wezel li2 jest sasiadem (w zasiegu) li N_range (zasi�g sasiedztwa)
            N_Map(li,kolejny,1)=li2;        % dodaj do listy numer kolejnego sasiada
            N_Map(li,kolejny,2)=0;          % subordination 0-NO
            N_Map(li,1,1)=N_Map(li,1,1)+1;  % zwieksz licznik sasiadow
            odl(kolejny)=D_Map(li2,li2);    % odleglosc tego sasiada od BS
            kolejny=kolejny+1;
        end;
    end;                                    % mamy wszystkich sasiadow wezla li
    %czy w sasiedztwie LI jest BS czy nie
    if N_Range >=D_Map(li,li)               % stacja bazowa jest sasiadem (w zasiegu) li
        N_Map(li,kolejny,1)=0;              % dodaj do listy numer (0) kolejnego sasiada - stacji bazowej
        N_Map(li,1,1)=N_Map(li,1,1)+1;      % zwieksz licznik sasiadow
        odl(kolejny)=0;                     % odleglosc tego sasiada (stacji bazowej) od stacji bazowej
    end;
    
    %%  rysuj punkt i jego zakres sasiedztwa
%     plot(S_Map(li,1),S_Map(li,2),'black.');
%     hold on;
%     draw_circle(S_Map(li,1), S_Map(li,2), N_Range,100); % rysuj zakres sasiedztwa
    
end;